import java.util.*;
/*给定一个非空且只包含非负数的整数数组 nums，数组的 度 的定义是指数组里任一元素出现频数的最大值。
你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组，返回其长度。
 输入：nums = [1,2,2,3,1]
输出：2*/
public class Main{
    public static int seeknumber(int[] nums){
        int n=nums.length;
        if(n==0)return 0;
        Map<Integer,Integer> countm=new HashMap<>();
        Map<Integer,Integer> start=new HashMap<>();
        Map<Integer,Integer> last=new HashMap<>();
        int maxcount=0;
        for(int i=0;i<n;i++){
            int num=nums[i];
            start.putIfAbsent(num,i);
            last.put(num,i);
            int count=countm.getOrDefault(num,0)+1;
            countm.put(num,count);
            if(count>maxcount){
                maxcount=count;
            }
        }
        int min=Integer.MAX_VALUE;
        for(Map.Entry<Integer,Integer> entry:countm.entrySet()){
            if(entry.getValue()==maxcount){
                int t=entry.getKey();
                int l=last.get(t)-start.get(t)+1;
                if(l<min){
                    min=l;
                }
            }
        }
        return min;
    }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] nums=new int[n];
        for(int i=0;i<n;i++){
            nums[i]=sc.nextInt();
        }
        int res=seeknumber(nums);
        System.out.println(res);
    }
}